Python istemci kitaplığını kullanarak Google Cloud Platform'a (GCP) hizmet erişiminde uzmanlaşın. Kimlik doğrulama, hizmet etkileşimi ve ölçeklenebilir bulut uygulamaları oluşturma konusunda en iyi uygulamaları öğrenin.
Python ile Google Cloud Platform'un Kilidini Açmak: GCP Hizmet Erişimi İçin Kapsamlı Bir Kılavuz
Google Cloud Platformu (GCP), ölçeklenebilir ve güvenilir uygulamalar oluşturmak ve dağıtmak için çok çeşitli hizmetler sunar. Açık sözdizimi ve kapsamlı kitaplıklarıyla Python, GCP ile etkileşim kurmak için popüler bir seçimdir. Bu kılavuz, çeşitli teknik geçmişlere sahip küresel bir kitleye hitap ederek, GCP hizmetlerine erişmek ve bunları yönetmek için Python istemci kitaplığının nasıl kullanılacağına dair kapsamlı bir genel bakış sunar.
Neden GCP ile Python Kullanmalısınız?
Python, GCP ile etkileşim için çeşitli avantajlar sunar:
- Kullanım Kolaylığı: Python'un okunabilir sözdizimi, geliştirmeyi basitleştirerek GCP uygulamalarını öğrenmeyi ve sürdürmeyi kolaylaştırır.
- Kapsamlı Kitaplıklar: Google, GCP hizmetleri için özel olarak tasarlanmış, iyi bakılan bir Python istemci kitaplığı sağlar.
- Güçlü Topluluk Desteği: Büyük ve aktif bir Python topluluğu, GCP geliştirme için bol miktarda kaynak, öğretici ve destek sağlar.
- Otomasyon ve Komut Dosyası Oluşturma: Python, bulut ortamları için çok önemli olan görevleri otomatikleştirmede ve altyapı yönetimini komut dosyasıyla çalıştırmada mükemmeldir.
- Veri Bilimi ve Makine Öğrenimi: Python, GCP'nin AI/ML hizmetleriyle sorunsuz bir şekilde bütünleşen veri bilimi ve makine öğrenimi için tercih edilen dildir.
Ortamınızı Ayarlama
Başlamadan önce, Python ortamınızı ayarlamanız ve gerekli kitaplıkları yüklemeniz gerekir.
1. Python ve Pip'i Yükleyin
Python yüklü değilse, resmi Python web sitesinden (https://www.python.org/downloads/) en son sürümü indirin ve yükleyin. Python paket yükleyicisi olan Pip, genellikle Python kurulumlarına dahildir.
Doğrulama: Terminalinizi veya komut isteminizi açın ve aşağıdaki komutları çalıştırın:
python --version
pip --version
Bu komutlar, yüklü Python ve Pip sürümlerini göstermelidir.
2. Python için Google Cloud İstemci Kitaplığını Yükleyin
`google-cloud-python` kitaplığı, tüm GCP hizmetlerine erişim sağlar. Pip'i kullanarak yükleyin:
pip install google-cloud-storage google-cloud-compute google-cloud-pubsub # Örnek - Depolama, işlem ve pubsub paketlerini yükleyin
Yalnızca kullanmayı düşündüğünüz GCP hizmetleri için belirli istemci kitaplıklarını yükleyin. Bu, uygulamanızın bağımlılıklarının boyutunu küçültür.
Örnek (Bulut Depolama): Bulut Depolama istemci kitaplığını yüklemek için:
pip install google-cloud-storage
3. Kimlik Doğrulamayı Yapılandırın
Kimlik doğrulama, Python uygulamanıza GCP kaynaklarına erişim izni vermek için çok önemlidir. Kullanılabilen çeşitli kimlik doğrulama yöntemleri vardır:
- Hizmet Hesapları: GCP'de çalışan uygulamalar için önerilir (örneğin, Compute Engine, Cloud Functions, Cloud Run).
- Kullanıcı Kimlik Bilgileri: Yerel geliştirme ve test için uygundur.
Hizmet Hesaplarını Kullanma (Üretim için Önerilir)
Hizmet hesapları, uygulamaları ve hizmetleri kimlik doğrulamak için kullanılabilen insan olmayan hesaplardır. GCP kaynaklarına erişim vermek için güvenli ve kontrollü bir yol sağlarlar.
- Bir Hizmet Hesabı Oluşturun: Google Cloud Console'da IAM ve Yönetici > Hizmet Hesapları'na gidin ve Hizmet Hesabı Oluştur'u tıklayın. Hizmet hesabınız için bir ad ve açıklama sağlayın.
- İzinleri Verin: Uygulamanızın erişmesi gereken GCP kaynaklarına göre hizmet hesabınıza uygun rolleri atayın (örneğin, Bulut Depolama nesneleri üzerinde tam denetim için `roles/storage.objectAdmin`).
- Hizmet Hesabı Anahtarını İndirin: Hizmet hesabınız için bir JSON anahtar dosyası oluşturun ve indirin. Bu anahtar dosyasına son derece dikkatli davranın, çünkü GCP kaynaklarınıza erişim sağlar. Güvenli bir şekilde saklayın ve asla sürüm kontrolüne göndermeyin.
- `GOOGLE_APPLICATION_CREDENTIALS` Ortam Değişkenini Ayarlayın: İndirilen JSON anahtar dosyasının yoluna `GOOGLE_APPLICATION_CREDENTIALS` ortam değişkenini ayarlayın.
Örnek (Linux/macOS):
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
Örnek (Windows):
set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your\service-account-key.json
Önemli Güvenlik Notu: Hizmet hesabı anahtarınızı doğrudan kodunuza gömmekten kaçının. `GOOGLE_APPLICATION_CREDENTIALS` ortam değişkenini kullanmak, güvenlik ve sürdürülebilirlik için önerilen yaklaşımdır.
Kullanıcı Kimlik Bilgilerini Kullanma (Yerel Geliştirme İçin)
Yerel geliştirme ve test için, kendi Google Cloud kullanıcı kimlik bilgilerinizi kullanabilirsiniz.
- Google Cloud SDK'sını (gcloud) Yükleyin: Resmi web sitesinden (https://cloud.google.com/sdk/docs/install) Google Cloud SDK'sını indirin ve yükleyin.
- gcloud ile kimlik doğrulaması yapın: Terminalinizde veya komut isteminizde aşağıdaki komutu çalıştırın:
gcloud auth application-default login
Bu komut, Google Cloud hesabınızda oturum açabileceğiniz ve Google Cloud SDK'sına gerekli izinleri verebileceğiniz bir tarayıcı penceresi açacaktır.
Python ile GCP Hizmetlerine Erişme
Ortamınızı kurduktan ve kimlik doğrulamayı yapılandırdıktan sonra, Python istemci kitaplığını kullanarak GCP hizmetlerine erişmeye başlayabilirsiniz. İşte bazı örnekler:
1. Bulut Depolama
Bulut Depolama, ölçeklenebilir ve dayanıklı nesne depolama sağlar. Python istemci kitaplığını, Bulut Depolama paketlerinizdeki nesneleri yüklemek, indirmek ve yönetmek için kullanabilirsiniz.
Örnek: Bulut Depolamaya Dosya Yükleme
from google.cloud import storage
# Paket adınız ve dosya yolunuz ile değiştirin
BUCKET_NAME = "your-bucket-name"
FILE_PATH = "/path/to/your/local/file.txt"
OBJECT_NAME = "remote/file.txt" # Dosyanın Bulut Depolamada sahip olmasını istediğiniz ad
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.upload_from_filename(FILE_PATH)
print(f"Dosya {FILE_PATH}, gs://{BUCKET_NAME}/{OBJECT_NAME} konumuna yüklendi.")
Açıklama:
- `from google.cloud import storage`: Bulut Depolama modülünü içe aktarır.
- `storage.Client()`: Daha önce ayarlanan kimlik doğrulama kimlik bilgilerini kullanarak bir Bulut Depolama istemci nesnesi oluşturur.
- `client.bucket(BUCKET_NAME)`: Belirtilen Bulut Depolama paketine bir başvuru alır.
- `bucket.blob(OBJECT_NAME)`: Paket içinde belirtilen ada sahip bir blob (nesne) oluşturur.
- `blob.upload_from_filename(FILE_PATH)`: Dosyayı yerel dosya yolundan Bulut Depolama blobuna yükler.
Örnek: Bulut Depolamadan Dosya İndirme
from google.cloud import storage
# Paket adınız, nesne adınız ve yerel dosya yolunuz ile değiştirin
BUCKET_NAME = "your-bucket-name"
OBJECT_NAME = "remote/file.txt"
FILE_PATH = "/path/to/your/local/downloaded_file.txt"
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.download_to_filename(FILE_PATH)
print(f"Dosya gs://{BUCKET_NAME}/{OBJECT_NAME}, {FILE_PATH} konumuna indirildi.")
2. Compute Engine
Compute Engine, GCP'de sanal makineler (VM'ler) sağlar. Python istemci kitaplığını, Compute Engine örneklerini oluşturma, başlatma, durdurma ve silme dahil olmak üzere yönetmek için kullanabilirsiniz.
Örnek: Compute Engine Örneklerini Listeleme
from google.cloud import compute_v1
# Proje kimliğiniz ve bölgeniz ile değiştirin
PROJECT_ID = "your-project-id"
ZONE = "us-central1-a"
client = compute_v1.InstancesClient()
request = compute_v1.ListInstancesRequest(
project=PROJECT_ID,
zone=ZONE
)
# İsteği yapın
pager = client.list(request=request)
print("Proje ve bölgedeki örnekler:")
# Yanıtı işleyin
for response in pager:
print(response)
Açıklama:
- `from google.cloud import compute_v1`: Compute Engine modülünü (v1 sürümü) içe aktarır. Varsa daha güncel bir sürüm kullanmayı düşünün.
- `compute_v1.InstancesClient()`: Bir Compute Engine istemci nesnesi oluşturur.
- `compute_v1.ListInstancesRequest()`: Belirtilen proje ve bölgedeki örnekleri listelemek için bir istek oluşturur.
- `client.list(request=request)`: İsteği Compute Engine API'sine gönderir.
- Kod daha sonra yanıt boyunca (bir çağrı cihazı nesnesi) yinelenir ve her örnek hakkında bilgi yazdırır.
3. Cloud Functions
Cloud Functions, sunucusuz yürütme ortamları sağlar. Cloud Functions'ı dağıtmak ve yönetmek için Python istemci kitaplığını kullanabilirsiniz.
Örnek: Cloud Function'ı Dağıtma (Google Cloud SDK Gerektirir)
Bir Cloud Function'ı dağıtmak genellikle doğrudan Google Cloud SDK'sını (gcloud) kullanmayı içerir, ancak daha karmaşık senaryolar için Python istemci kitaplığı aracılığıyla Cloud Functions API'sine erişilebilir. Bu örnek, temel bir gcloud dağıtım komutunu gösterir. Öncelikle bir main.py ve requirements.txt oluşturun:
main.py (örnek)
def hello_world(request):
return 'Merhaba Dünya!'
requirements.txt (örnek)
functions-framework
Dağıtım komutu:
gcloud functions deploy your-function-name --runtime python310 --trigger-http --entry-point hello_world
Açıklama:
- `gcloud functions deploy your-function-name`: Belirtilen ada sahip bir Cloud Function'ı dağıtır. `your-function-name` yerine işleviniz için istediğiniz adı kullanın.
- `--runtime python310`: Python çalışma zamanı ortamını belirtir (örneğin, python310, python311). Desteklenen bir çalışma zamanı seçin.
- `--trigger-http`: İşlevi HTTP istekleri tarafından tetiklenecek şekilde yapılandırır.
- `--entry-point hello_world`: İşlev tetiklendiğinde yürütülecek işlevi belirtir. Bu, `main.py` içinde tanımlanan `hello_world` işlevine karşılık gelir.
4. Cloud Run
Cloud Run, kapsayıcılı uygulamaları sunucusuz bir ortamda dağıtmanızı sağlar. Python istemci kitaplığını kullanarak Cloud Run hizmetlerini yönetebilirsiniz, ancak dağıtım genellikle Google Cloud SDK veya Terraform gibi altyapı olarak kod araçlarıyla yapılır.
Örnek: Bir Cloud Run Hizmetini Dağıtma (Google Cloud SDK ve Docker Gerektirir)
Cloud Run dağıtımları genellikle bir Dockerfile ile başlar.
Dockerfile (örnek):
FROM python:3.10
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "main:app"]
main.py (örnek) - Minimal Flask Uygulaması
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Cloud Run'dan Merhaba!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8080)
requirements.txt (örnek):
flask
gunicorn
Dağıtım Komutları:
# Docker görüntüsünü oluşturun
docker build -t gcr.io/your-project-id/cloud-run-image .
# Görüntüyü Google Container Registry'ye gönderin
docker push gcr.io/your-project-id/cloud-run-image
# Cloud Run hizmetini dağıtın
gcloud run deploy your-cloud-run-service \
--image gcr.io/your-project-id/cloud-run-image \
--platform managed \
--region us-central1 \
--allow-unauthenticated
Açıklama:
- `docker build`: Dockerfile'dan bir Docker görüntüsü oluşturur. `gcr.io/your-project-id/cloud-run-image` yerine istediğiniz görüntü adını ve Google Container Registry yolunu kullanın.
- `docker push`: Docker görüntüsünü Google Container Registry'ye (GCR) gönderir. Docker'ı GCR ile kimlik doğrulaması yapacak şekilde yapılandırmanız gerekir.
- `gcloud run deploy`: Bir Cloud Run hizmetini dağıtır.
- `--image`: Hizmet için kullanılacak Docker görüntüsünü belirtir.
- `--platform managed`: Hizmetin tamamen yönetilen Cloud Run platformunda dağıtılması gerektiğini belirtir.
- `--region`: Hizmetin dağıtılması gereken bölgeyi belirtir.
- `--allow-unauthenticated`: Hizmete kimlik doğrulaması yapılmamış erişime izin verir (test amaçları için). Bir üretim ortamında, uygun kimlik doğrulamayı yapılandırmanız gerekir.
5. Cloud SQL
Cloud SQL, GCP'de yönetilen ilişkisel veritabanları sağlar. Python istemci kitaplığını (`psycopg2` (PostgreSQL için) veya `pymysql` (MySQL için) gibi veritabanına özgü kitaplıklarla birlikte) Cloud SQL örneklerine bağlanmak ve bunları yönetmek için kullanabilirsiniz.
Örnek: Bir Cloud SQL PostgreSQL Örneğine Bağlanma
import psycopg2
# Cloud SQL örnek bağlantı adınız, veritabanı adınız, kullanıcı adınız ve şifreniz ile değiştirin
INSTANCE_CONNECTION_NAME = "your-project-id:your-region:your-instance-name"
DB_NAME = "your_database_name"
DB_USER = "your_username"
DB_PASS = "your_password"
try:
conn = psycopg2.connect(
f"host=/cloudsql/{INSTANCE_CONNECTION_NAME} dbname={DB_NAME} user={DB_USER} password={DB_PASS}"
)
print("Cloud SQL'e başarıyla bağlandı!")
# Burada veritabanı işlemleri gerçekleştirin (örneğin, sorguları yürütün)
cur = conn.cursor()
cur.execute("SELECT version();")
db_version = cur.fetchone()
print(f"Veritabanı sürümü: {db_version}")
except Exception as e:
print(f"Cloud SQL'e bağlanırken hata: {e}")
finally:
if conn:
cur.close()
conn.close()
print("Bağlantı kapatıldı.")
Açıklama:
- `import psycopg2`: Python için bir PostgreSQL bağdaştırıcısı olan `psycopg2` kitaplığını içe aktarır. `pip install psycopg2-binary` komutunu kullanarak yüklemeniz gerekecektir.
- `INSTANCE_CONNECTION_NAME`: Bu, Cloud SQL örneğinize nasıl bağlanılacağını belirten çok önemli bir tanımlayıcıdır. Bu değeri, Google Cloud Console'da Cloud SQL örnek ayrıntılarınız altında bulabilirsiniz.
- `psycopg2.connect()` işlevi, sağlanan parametreleri kullanarak veritabanına bir bağlantı kurar.
- Kod daha sonra veritabanı sürümünü almak için basit bir sorgu yürütür ve konsola yazdırır.
- Bir `finally` bloğu, hatalar oluşsa bile veritabanı bağlantısının düzgün şekilde kapatılmasını sağlar.
Python ile GCP Kullanımı için En İyi Uygulamalar
Python ile GCP uygulamaları geliştirirken izlenecek bazı en iyi uygulamalar şunlardır:
- Hizmet Hesaplarını Kullanın: Özellikle üretim ortamlarında kimlik doğrulama için her zaman hizmet hesaplarını kullanın. Onlara yalnızca gerekli izinleri verin (en az ayrıcalık ilkesi).
- Bağımlılıkları Yönetin: Uygulamanızın bağımlılıklarını yönetmek için bir `requirements.txt` dosyası kullanın. Bu, tutarlı dağıtımlar sağlar ve bağımlılık yönetimini basitleştirir.
- Hataları İşleyin: İstisnaları zarif bir şekilde işlemek ve uygulama çökmelerini önlemek için uygun hata işlemeyi uygulayın. Olası hataları yakalamak ve hata ayıklama için günlüğe kaydetmek için try-except bloklarını kullanın.
- Etkili Bir Şekilde Günlüğe Kaydedin: Uygulama olaylarını ve hatalarını günlüğe kaydetmek için GCP'nin Cloud Logging hizmetini kullanın. Bu, uygulamanızın davranışına dair değerli bilgiler sağlar ve sorun gidermeye yardımcı olur.
- Ortam Değişkenlerini Kullanın: API anahtarları ve veritabanı kimlik bilgileri gibi hassas bilgileri ortam değişkenlerinde saklayın. Bu, bunların kodunuzda sabit kodlanmasını önler ve güvenliği artırır.
- Performans için Optimize Edin: GCP uygulamalarınızın performansını artırmak için önbelleğe alma, asenkron işlemler ve diğer optimizasyon tekniklerini kullanın. İçerik dağıtımı için Cloud CDN gibi GCP hizmetlerini kullanmayı düşünün.
- Uygulamalarınızı İzleyin: Uygulamalarınızın sağlığını ve performansını izlemek için GCP'nin Cloud Monitoring hizmetini kullanın. Herhangi bir sorun olduğunda haberdar olmak için uyarılar ayarlayın.
- Dağıtımları Otomatikleştirmem: Dağıtım sürecini otomatikleştirmek için Terraform gibi altyapı olarak kod araçlarını veya dağıtım boru hatlarını kullanın. Bu, tutarlı ve tekrarlanabilir dağıtımlar sağlar.
- Doğru GCP Hizmetini Seçin: Uygulamanızın ihtiyaçları için uygun GCP hizmetini seçin. Ölçeklenebilirlik, maliyet ve operasyonel karmaşıklık gibi faktörleri göz önünde bulundurun. Örneğin, Cloud Functions olay güdümlü görevler için çok uygundur, Cloud Run ise kapsayıcılı uygulamaları dağıtmak için idealdir.
- Kaynakları Temizleyin: Gereksiz maliyetlerden kaçınmak için kullanılmayan GCP kaynaklarını temizlemeyi unutmayın.
- Kitaplıkları Güncel Tutun: Hata düzeltmelerinden, güvenlik yamalarından ve yeni özelliklerden yararlanmak için Python kitaplıklarınızı düzenli olarak güncelleyin. Paketlerinizi güncellemek için `pip` kullanın: `pip install --upgrade
`. - Sanal Ortamları Kullanın: Bağımlılıkları izole etmek ve farklı projeler arasında çakışmaları önlemek için her proje için sanal ortamlar oluşturun.
Küresel Hususlar
Küresel bir kitle için GCP uygulamaları geliştirirken, aşağıdakileri göz önünde bulundurun:
- Veri İkameti: Hedef bölgeleriniz için veri ikameti gereksinimlerini anlayın. Bu gereksinimlere uyan GCP bölgelerini seçin.
- Gecikme: Uygulamalarınızı kullanıcılarınıza coğrafi olarak yakın olan bölgelerde dağıtarak gecikmeyi en aza indirin.
- Yerelleştirme: Uygulamanızın kullanıcı arayüzünü ve içeriğini farklı diller ve bölgeler için yerelleştirin.
- Para Birimi ve Ödeme İşlemleri: Uygulamanız finansal işlemler içeriyorsa, hedef bölgelerinizde kullanılan para birimlerini ve ödeme yöntemlerini desteklediğinizden emin olun.
- Yasal ve Düzenleyici Uyumluluk: Hedef bölgelerinizdeki veri gizliliği yasaları (örneğin, GDPR) ve ihracat kontrolleri gibi yasal ve düzenleyici gereksinimlerin farkında olun.
- Saat Dilimleri: Uygulamanızın farklı konumlardaki kullanıcılar için tarihleri ve saatleri doğru bir şekilde görüntülemesini sağlamak için saat dilimlerini doğru şekilde işleyin. Saat dilimi dönüştürmelerini yönetmek için `pytz` gibi kitaplıkları kullanın.
- Kültürel Hassasiyet: Uygulamanızın kullanıcı arayüzünü ve içeriğini tasarlarken kültürel farklılıklara dikkat edin.
Sık Karşılaşılan Sorunları Giderme
Python ile GCP kullanırken karşılaşabileceğiniz bazı yaygın sorunlar ve bunları nasıl gidereceğiniz aşağıdadır:
- Kimlik Doğrulama Hataları: Hizmet hesabı anahtar dosyanızın geçerli olduğunu ve `GOOGLE_APPLICATION_CREDENTIALS` ortam değişkeninin doğru ayarlandığını doğrulayın. Ayrıca, hizmet hesabının GCP kaynaklarına erişmek için gerekli izinlere sahip olduğundan emin olun.
- İzin Reddedildi Hataları: Hizmet hesabınıza veya kullanıcı hesabınıza atanan IAM rollerini iki kez kontrol edin. Gerçekleştirmeye çalıştığınız işlem için gerekli izinlere sahip olduklarından emin olun.
- İçe Aktarma Hataları: `pip` kullanarak gerekli Python kitaplıklarını yüklediğinizi doğrulayın. Kitaplık adlarının doğru olduğundan ve doğru sürümü kullandığınızdan emin olun.
- Ağ Bağlantı Sorunları: Uygulamanızı bir VM örneğinde çalıştırıyorsanız, VM'nin internete ve erişmeye çalıştığınız GCP hizmetlerine ağ bağlantısı olduğundan emin olun. Güvenlik duvarı kurallarınızı ve ağ yapılandırmanızı kontrol edin.
- API Hız Sınırları: GCP API'leri, kötüye kullanımı önlemek için hız sınırlarına sahiptir. Hız sınırlarını aşıyorsanız, hatalarla karşılaşabilirsiniz. API çağrılarının sayısını azaltmak için üstel geri çekilme veya önbelleğe alma uygulayın.
Sonuç
Python ve Google Cloud Platformu, ölçeklenebilir, güvenilir ve küresel olarak erişilebilir uygulamalar oluşturmak ve dağıtmak için güçlü bir kombinasyon sağlar. Bu kılavuzda özetlenen yönergeleri ve en iyi uygulamaları izleyerek, GCP hizmetlerine erişmek ve bunları yönetmek için Python istemci kitaplığından etkili bir şekilde yararlanabilir ve küresel bir kitle için yenilikçi çözümler oluşturmanızı sağlayabilirsiniz.
Her zaman güvenliğe öncelik vermeyi, performans için optimize etmeyi ve uygulamalarınızın küresel etkilerini göz önünde bulundurmayı unutmayın. Sürekli öğrenme ve deneme, GCP'de Python ile bulut geliştirme sanatında uzmanlaşmanın anahtarıdır.